/**
 * @file userparam.h
 * @brief Definisce una struttura che permette l'utilizzo di parametri.
 *
 * Come parametri si intende una struttura composta da due puntatori char, uno che rappresenta un identificativo
 * perciò chiamato 'name', e l'altro indica il valore assegnato 'value'.
 *
 * @date Mar 22, 2012
 * @author Francesco Corvino
 */

#ifndef USERPARAM_H_
#define USERPARAM_H_
#include "dynArray.h"


/**
 * @brief Struttura per definire un parametro utilizzato dall'utente.
 *
 * Si compone da due attributi puntatori a stringa: {name|value}
 */
typedef struct UserParam_ {
	char *name;
	char *value;
} UserParam;

////////////////////////////////////////////////////////////////////////////////////////////////
////// Funzioni per la creazione-inizializzazione e distruzione degli elementi. ////////////////
////////////////////////////////////////////////////////////////////////////////////////////////

void UserParam_init(UserParam * p,char *name, char *value);

int UserParam_find(UserParam* p, char *line, char divName, char divValue);

void UserParam_fillArr(DynArray * arr, char *line, char divName, char divValue);

/**
 * @brief define per l'utilizzo della funzione con valori di default
 */
#define UserParam_fillArrDef(arr,line) UserParam_fillArr(arr,line,'=',';')

void UserParam_destroy(const void * param);

////////////////////////////////////////////////////////////////////////////////////////////////
////// Funzioni di gestione degli elementi. ////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////

UserParam* UserParam_getFromDynArray(DynArray * arr, char*name);

////////////////////////////////////////////////////////////////////////////////////////////////
////// Funzioni d'utilità //////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////

int UserParam_cmp(const void *a, const void *b);

int UserParam_getFirstPos(char * str, const char * chars);

#endif /* USERPARAM_H_ */
